﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Diagnostics;
using System.IO;

namespace GenericControlsWinForm.Utilidades
{
    public static class GenericUtil
    {
        public static void ExibirMensagem(string msg)
        {
            MessageBox.Show(msg, Config.NomeSistema);
        }

        public static void LogarError(Exception ex)
        {
            try
            {
                ExibirMensagem("Erro : \n" + ex.Message);

                EscreverLogTxt(ex.Message);

                EscreverLogEventViewer(ex.Message);

                FrmEmail frm = new FrmEmail();
                frm.error = ex;
                frm.ShowDialog();
            }
            catch (Exception)
            {
                ExibirMensagem("Houve um erro ao gerar o log.");
            }
        }

        private static void EscreverLogEventViewer(string message)
        {
            EventLog.WriteEntry("Application", message, EventLogEntryType.Error);
        }

        private static void EscreverLogTxt(string message)
        {
            StreamWriter sw = File.AppendText(LogFile());
            sw.WriteLine(DateTime.Now);
            sw.WriteLine("\t" + message + Environment.NewLine);
            sw.Close();
        }

        public static string BuscarMensagemError()
        {
            return "Houve um erro. Favor tentar mais tarde.";
        }

        public static void carregarNovo(GroupBox botoes)
        {
            Button novo = ((Button)botoes.Controls["btnNovo"]);
            if (novo != null)
            {
                novo.Enabled = true;
                novo.Text = "Confirmar";
            }

            Button alterar = ((Button)botoes.Controls["btnAlterar"]);
            if (alterar != null)
                alterar.Enabled = false;

            Button excluir = ((Button)botoes.Controls["btnExcluir"]);
            if (excluir != null)
                excluir.Enabled = false;

            Button consultar = ((Button)botoes.Controls["btnConsultar"]);
            if (consultar != null)
                consultar.Enabled = false;

            Button cancelar = ((Button)botoes.Controls["btnCancelar"]);
            if (cancelar != null)
                cancelar.Enabled = true;
        }

        public static void carregarConfirmarNovo(GroupBox botoes)
        {
            Button novo = ((Button)botoes.Controls["btnNovo"]);
            if (novo != null)
            {
                novo.Enabled = true;
                novo.Text = "Novo";
            }

            Button alterar = ((Button)botoes.Controls["btnAlterar"]);
            if (alterar != null)
                alterar.Enabled = true;

            Button excluir = ((Button)botoes.Controls["btnExcluir"]);
            if (excluir != null)
                excluir.Enabled = true;

            Button consultar = ((Button)botoes.Controls["btnConsultar"]);
            if (consultar != null)
                consultar.Enabled = true;

            Button cancelar = ((Button)botoes.Controls["btnCancelar"]);
            if (cancelar != null)
                cancelar.Enabled = false;
        }

        public static void carregarAlterar(GroupBox botoes)
        {
            Button novo = ((Button)botoes.Controls["btnNovo"]);
            if (novo != null)
                novo.Enabled = false;

            Button alterar = ((Button)botoes.Controls["btnAlterar"]);
            if (alterar != null)
            {
                alterar.Text = "Confirmar";
                alterar.Enabled = true;
            }

            Button excluir = ((Button)botoes.Controls["btnExcluir"]);
            if (excluir != null)
                excluir.Enabled = false;

            Button consultar = ((Button)botoes.Controls["btnConsultar"]);
            if (consultar != null)
                consultar.Enabled = false;

            Button cancelar = ((Button)botoes.Controls["btnCancelar"]);
            if (cancelar != null)
                cancelar.Enabled = true;
        }

        public static void carregarConfirmarAlterar(GroupBox botoes)
        {
            Button novo = ((Button)botoes.Controls["btnNovo"]);
            if (novo != null)
                novo.Enabled = true;

            Button alterar = ((Button)botoes.Controls["btnAlterar"]);
            if (alterar != null)
            {
                alterar.Enabled = true;
                alterar.Text = "Alterar";
            }

            Button excluir = ((Button)botoes.Controls["btnExcluir"]);
            if (excluir != null)
                excluir.Enabled = true;

            Button consultar = ((Button)botoes.Controls["btnConsultar"]);
            if (consultar != null)
                consultar.Enabled = true;

            Button cancelar = ((Button)botoes.Controls["btnCancelar"]);
            if (cancelar != null)
                cancelar.Enabled = false;
        }

        public static void carregarConsultar(GroupBox botoes)
        {
            Button novo = ((Button)botoes.Controls["btnNovo"]);
            if (novo != null)
                novo.Enabled = true;

            Button alterar = ((Button)botoes.Controls["btnAlterar"]);
            if (alterar != null)
                alterar.Enabled = true;

            Button excluir = ((Button)botoes.Controls["btnExcluir"]);
            if (excluir != null)
                excluir.Enabled = true;

            Button consultar = ((Button)botoes.Controls["btnConsultar"]);
            if (consultar != null)
                consultar.Enabled = true;

            Button cancelar = ((Button)botoes.Controls["btnCancelar"]);
            if (cancelar != null)
                cancelar.Enabled = false;
        }

        public static void carregarExcluir(GroupBox botoes)
        {
            Button novo = ((Button)botoes.Controls["btnNovo"]);
            if (novo != null)
                novo.Enabled = true;

            Button alterar = ((Button)botoes.Controls["btnAlterar"]);
            if (alterar != null)
                alterar.Enabled = false;

            Button excluir = ((Button)botoes.Controls["btnExcluir"]);
            if (excluir != null)
                excluir.Enabled = false;

            Button consultar = ((Button)botoes.Controls["btnConsultar"]);
            if (consultar != null)
                consultar.Enabled = true;

            Button cancelar = ((Button)botoes.Controls["btnCancelar"]);
            if (cancelar != null)
                cancelar.Enabled = false;
        }

        public static void carregarCancelar(GroupBox botoes)
        {
            Button novo = ((Button)botoes.Controls["btnNovo"]);
            if (novo != null)
            {
                novo.Text = "Novo";
                novo.Enabled = true;
            }

            Button alterar = ((Button)botoes.Controls["btnAlterar"]);
            if (alterar != null)
            {
                alterar.Text = "Alterar";
                alterar.Enabled = false;
            }

            Button excluir = ((Button)botoes.Controls["btnExcluir"]);
            if (excluir != null)
                excluir.Enabled = false;

            Button consultar = ((Button)botoes.Controls["btnConsultar"]);
            if (consultar != null)
                consultar.Enabled = true;

            Button cancelar = ((Button)botoes.Controls["btnCancelar"]);
            if (cancelar != null)
                cancelar.Enabled = false;
        }

        public static string LogFile()
        {
            return string.Format(@"c:\LogSistema\{1}{2}{3}.txt", 
                                        Application.StartupPath, 
                                        DateTime.Today.Year, 
                                        DateTime.Today.Month.ToString().PadLeft(2,'0'), 
                                        DateTime.Today.Day.ToString().PadLeft(2,'0'));
        }
    }
}
